////类中的静态成员变量 和静态成员函数
//#include <iostream>
//
//using namespace std;
//
////普通成员函数属于对象：普通成员函数必须利用对象调用
////静态成员函数不属于对象：静态成员函数不是必须利用对象调用
//class A {
//public:
//    int m_i; //普通的成员变量
//    void foo() {//普通成员函数
//        cout << "A::foo()" << endl;
//        cout << "m_i = " << m_i << endl;
//        cout << "m_si=" << m_si << endl;
//        bar();
//        //以上三行代码证明普通成员函数内部可以访问非静态成员，也可以访问静态成员
//    }
//
//    static int m_si;//静态的成员变量
//    static void bar()/*const*/ { //静态成员函数不能加const
//        cout << "A::bar()" << endl;
//        cout << "m_si=" << m_si << endl;//证明静态成员函数内部可以访问静态成员
////        cout << "m_si=" << m_i << endl;//error
////        foo();//error，静态成员函数不能调用普通的成员函数
////以上2行代码证明在静态成员函数内部不可以访问非静态成员
//
//    }
//};
//
//int A::m_si = 0;//全局域中定义-->进程级生命期
//
//int main(void) {
//    A a, b;
//
//    a.foo();//foo(&a)
//    b.foo();//foo(&b)
//
//    A::bar();//静态成员函数会受到类作用域和访问控制限定符的约束
//
//    a.bar();//A::bar()
//    b.bar();//B::bar()
//    return 0;
//}